/*
*
* 先下载 node.js  官网地址：https://nodejs.org/en
* 安装 crypto-js  实现了 哈希算法  对称加密算法，没有非对称加密算法
* npm install crypto-js
*
*
*
* */

// md5 加密
// const crypto =require("crypto-js")
// const md5 = crypto.MD5("hello world")  // 二进制对象
// const cipher_text = md5.toString()
//
// console.log(cipher_text.length)


// sha256  sha512

// const crypto =require("crypto-js")
// const sha256 = crypto.SHA256("hello world")  // 二进制对象
// const cipher_text = sha256.toString()
// console.log(cipher_text)
// console.log(cipher_text.length)


// 对称加密  aes  cbc
const crypto =require("crypto-js")
// 加密数据
let content = "hello world";
let content_bytes = crypto.enc.Utf8.parse(content)  // 转成二进制

// 秘钥
let key = "1234567887654321"
let key_bytes = crypto.enc.Utf8.parse(key)

// 随机向量

let iv = "1234567887654321"
let iv_bytes = crypto.enc.Utf8.parse(iv)

// 加密
let cipher = crypto.AES.encrypt(content_bytes, key_bytes, {
    iv: iv_bytes,
    mode: crypto.mode.CBC,
    padding: crypto.pad.Pkcs7
})

cipher_text = cipher.toString()
// console.log(cipher_text)


// 解码
// const encryptedHexStr = crypto.enc.Hex.parse(cipher_text);
// console.log(encryptedHexStr)
// const srcs = crypto.enc.Base64.stringify(encryptedHexStr);
// console.log(srcs)
// const decrypt = crypto.AES.decrypt(srcs, key_bytes, { iv: iv_bytes, mode: crypto.mode.CBC, padding: crypto.pad.Pkcs7});
// const decryptedStr = decrypt.toString(crypto.enc.Utf8);
// console.log(decryptedStr.toString());





